package com.jvm.jdbc.demo1;

/**
 * <p>
 * 1. 模板方法模式：所谓模板板式，就是在父类中定义算法的主要流程，
 *                      而把一些个性化的步骤延迟到子类中去实现，
 *                      父类始终控制着整个流程的主动权，子类只是辅助父类实现某些可定制的步骤。
 *
 *    总结：====== 该包主要编写测试基本的模板方法模式 =====
 *
 * </p>
 *
 * @author qingshan
 * @since 2020-10-11 15:12
 */
public abstract class TemplatePattern {

    //模板方法
    public final void templateMethod(){

        method1();
        method2();//勾子方法
        method3();//抽象方法
    }

    /**
     * 私有方法，有且只能由父类实现逻辑，由于方法是private的，所以只能父类调用。
     */
    private void method1(){
        System.out.println("父类实现业务逻辑");
    }

    /**
     * 勾子方法。父类提供默认实现，如果子类觉得有必要定制，则可以覆盖父类的默认实现
     */
    public void method2(){
        System.out.println("父类默认实现，子类可覆盖");
    }

    /**
     * 子类必须实现的方法，即制定的步骤
     */
    protected abstract void method3();//子类负责实现业务逻辑
}
